package com.general.framework.example.filterRepeatArrayListItem;

import java.util.ArrayList;
import java.util.ListIterator;

public class ConcurrentModificationException {

    public static void main(String[] args) {
        ArrayList<String> array = new ArrayList<String>();

        // 创建并添加元素
        array.add("python");
        array.add("javascript");
        array.add("java");

        // 增强for循环 会报 ConcurrentModificationException 的错误，因为它本身就是用来替代迭代器的
        for (String s : array) {
            if ("javascript".equals(s)) {
                array.add("go");
            }
        }
        System.out.println("list3:" + array);

        // 方式1：迭代器迭代元素，迭代器修改元素
        // 而Iterator迭代器却没有添加功能，所以我们使用其子接口ListIterator
        // ListIterator lit = array.listIterator();
        // while (lit.hasNext()) {
        //     String s = (String) lit.next();
        //     if ("javascript".equals(s)) {
        //         lit.add("java");
        //     }
        // }
        // System.out.println("list1:" + array);

        // 方式2：集合遍历元素，集合修改元素(普通for)
        // for (int x = 0; x < array.size(); x++) {
        //     String s = (String) array.get(x);
        //     if ("javascript".equals(s)) {
        //         array.add("java");
        //     }
        // }
        // System.out.println("list2:" + array);
    }
}